
const baseURL = 'https://obuge.com/juzao'

let interceptors = {
    request(req){
        return new Promise(next =>{
            req.url = /^http/.test(req.url) ? req.url : (baseURL + req.url)
            req.header = req.header || {}
            if(wx.token) req.header.token = wx.token
            next(req)
        })
    },
    response(res){
        return new Promise(next => {
            let data = res.data
            if(res.statusCode == 404){
                data = ({errorMsg:'请求接口错误'})
            }else if (res.statusCode == 500){           
                 data = ({errorMsg:res.data || '服务器错误'})
            }else if(res.statusCode == 200){
            // next(res.data)
            }else{
                data = ({errorMsg:res.errMsg || '未知错误'})
            }
            if(data.errorMsg) {
                wx.showToast({
                  title: data.errorMsg,
                  icon:'none',
                  duration:2000
                })
            }
            next(data)
        })
    }
}

function GET(url,query,args){
    args = args || {}
   return new Promise((resolve,reject) => {
       interceptors.request({url}).then(req => {
                   wx.request({
        url: baseURL + url,
        ...req,
        data:query,
   success: (res) => {
       
    interceptors.response(res).then(data => {
        resolve(data)
    })
   },
   fall:(res) => {
        
        interceptors.response(res).then(data => {
            resolve(data)
        })
   }
   })
})
       })

}


function PUT(url,data,args){
    args = args || {}
    return new Promise((resolve,reject) => {
        interceptors.request({url,...args}).then(req => {
        wx.request({
        ...req,        
        data,
         method:'PUT',
    success: (res) => {
     interceptors.response(res).then(data => {
         resolve(data)
     })
    },
    fall:(res) => {
         
         interceptors.response(res).then(data => {
             resolve(data)
         })
    }
    })
 })
        })
        
 }

 function POST(url,data,args){
    args = args || {}
    return new Promise((resolve,reject) => {
        interceptors.request({url,...args}).then(req => {
             wx.request({
        ...req,        
        data,
         method:'POST',
    success: (res) => {
        
     interceptors.response(res).then(data => {
         resolve(data)
     })
    },
    fall:(res) => {
         
         interceptors.response(res).then(data => {
             resolve(data)
         })
    }
    })
 })
        })
        
 }

 function DELETE(url,data){
    return new Promise((resolve,reject) => {
        interceptors.request({url}).then(req => {
        wx.request({
        ...req,        
        data,
         method:'DELETE',
    success: (res) => {
        
     interceptors.response(res).then(data => {
         resolve(data)
     })
    },
    fall:(res) => {
         
         interceptors.response(res).then(data => {
             resolve(data)
         })
    }
    })
 })
        })
        
 }

module.exports = {
    baseURL,
    get:GET,
    put:PUT,
    post:POST,
    delete:DELETE  
}
